package proceso.carga.pozo;

import hibernate.HibernateUtil;

import org.hibernate.Session;


/**
 * 
 * @author edgar
 * Almacena los valores de los pozos en una base de datos.
 * 
 */

public class CargadorPozosProduccion {

	private String razon;
	
	public String getRazon() {
		return razon;
	}
	public void setRazon(String razon) {
		this.razon = razon;
	}
	
	public boolean cargarArchivo(String nombreArchivo, String nomArcCaudal){
		boolean resultado;
		LectorPozoProduccion lector = new LectorPozoProduccion();
		if(nombreArchivo != null){
			resultado = lector.leer(nombreArchivo,5);
			if(resultado) {
				// almacenar Personas y Organismos
				Session sess = HibernateUtil.currentSession();
				/** Starting the Transaction */
				org.hibernate.Transaction tx = sess.beginTransaction();
				for(int i=0; i<lector.getListaPersona().size(); i++) {
					sess.save(lector.getListaPersona().get(i));
				}
				for(int i=0; i<lector.getListaOrganismo().size(); i++) {
					sess.save(lector.getListaOrganismo().get(i));
				}
				for(int i=0; i<lector.getListaPersonaJuridica().size(); i++) {
					sess.save(lector.getListaPersonaJuridica().get(i));
				}
				// almacenamiento de las propiedades
				for(int i = 0; i < lector.getListaPropiedad().size(); i++ ){
					sess.save(lector.getListaPropiedad().get(i));
				}
				// almacenamiento de la lista de propietarios
				
				for(int i = 0; i < lector.getListaPropietario().size(); i++ ){
					sess.save(lector.getListaPropietario().get(i));
				}
				tx.commit();


				LectorInformacionPozoProduccion lectorInf = new LectorInformacionPozoProduccion();
				lectorInf.setListaPozo(lector.getListaPozo());
				if(lectorInf.leer(nombreArchivo,2)){
					tx = sess.beginTransaction();
					for(int i=0; i<lector.getListaPozo().size();i++){
						sess.save(lector.getListaPozo().get(i));
					}
					tx.commit();					
				}
				
				if(nomArcCaudal != null) {
					LectorCaudal lectorC = new LectorCaudal();
					lectorC.setListaPozo(lector.getListaPozo());
					if(lectorC.leer(nomArcCaudal)){
						tx = sess.beginTransaction();
						for(int i=0; i<lector.getListaPozo().size();i++){
							sess.save(lector.getListaPozo().get(i));
						}
						tx.commit();
					}

				}
				
				sess.close();
				
				
				return resultado;
			}
			else {
				System.out.println("fallo la lectura");
				razon = lector.getError();
			
				return resultado;
			}
			
		}
		else{
			razon = "No existe nombre para el archivo de entrada";
			return false;
		}
		
	}
}
